﻿using System.Linq;
using System.Windows;
using kursovaya.Data.Context;
using kursovaya.Data.Entity;

namespace kursovaya.Windows
{
    public partial class EdtiTecWindow : Window
    {
        public EdtiTecWindow()
        {
            InitializeComponent();
        }

        private Technician Technician;

        private void SearchButton_OnClick(object sender, RoutedEventArgs e)
        {
            FirstNameTextBox.Text = "";
            LastNameTextBox.Text = "";
            MiddleNameTextBox.Text = "";
            AgeTextBox.Text = "";
            RoleTextBox.Text = "";
            WorkExpirienceTextBox.Text = "";

            int id;
            if (int.TryParse(IdTextBox.Text.Trim(), out id))
            {
                using (var context = new DbContext())
                {
                    Technician = context.Technicians.FirstOrDefault(s => s.id == id);
                }

                if (Technician != null)
                {
                    FirstNameTextBox.Text = Technician.firstname;
                    LastNameTextBox.Text = Technician.lastname;
                    MiddleNameTextBox.Text = Technician.middlename;
                    AgeTextBox.Text = Technician.age;
                    RoleTextBox.Text = Technician.role;
                    WorkExpirienceTextBox.Text = Technician.workexperience;
                }
                else
                {
                    MessageBox.Show("Работник с указанным ID не найден.", "Поиск", MessageBoxButton.OK,
                        MessageBoxImage.Information);
                }
            }
            else
            {
                MessageBox.Show("Введите корректный ID работника.", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
            }
        }

        private void SaveShangesButton_OnClick(object sender, RoutedEventArgs e)
        {
            string firstname = FirstNameTextBox.Text.Trim();
            string lastname = LastNameTextBox.Text.Trim();
            string middlename = MiddleNameTextBox.Text.Trim();
            string ageText = AgeTextBox.Text.Trim();
            string role = RoleTextBox.Text.Trim();
            string workexpirience = WorkExpirienceTextBox.Text.Trim();

            if (string.IsNullOrWhiteSpace(firstname) || string.IsNullOrWhiteSpace(lastname) ||
                string.IsNullOrWhiteSpace(middlename) || string.IsNullOrWhiteSpace(ageText) ||
                string.IsNullOrWhiteSpace(role) || string.IsNullOrWhiteSpace(workexpirience))
            {
                MessageBox.Show("Поля не должны быть пустыми!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (firstname.Length > 20 || lastname.Length > 20 || middlename.Length > 20)
            {
                MessageBox.Show("Имя, фамилия и отчество не должны превышать 20 символов!", "Ошибка",
                    MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (!int.TryParse(ageText, out int age) || age < 14 || age > 70)
            {
                MessageBox.Show("Введите корректный возраст (от 14 до 70 лет)!", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (role.Length > 50 || workexpirience.Length > 50)
            {
                MessageBox.Show("Роль и опыт работы не должны превышать 50 символов!", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (Technician != null)
            {
                Technician.firstname = FirstNameTextBox.Text.Trim();
                Technician.lastname = LastNameTextBox.Text.Trim();
                Technician.middlename = MiddleNameTextBox.Text.Trim();
                Technician.age = AgeTextBox.Text.Trim();
                Technician.role = RoleTextBox.Text.Trim();
                Technician.workexperience = WorkExpirienceTextBox.Text.Trim();


                using (var context = new DbContext())
                {
                    context.Entry(Technician).State = System.Data.Entity.EntityState.Modified;
                    context.SaveChanges();
                }

                MessageBox.Show("Изменения успешно сохранены.",
                    "Редактирование",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("Сначала выполните поиск сотрудника по ID.", "Ошибка", MessageBoxButton.OK,
                    MessageBoxImage.Error);
            }
        }
    }
}